package br.com.sgc.session;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import br.com.sgc.dao.HospedagemDao;
import br.com.sgc.entities.hotelaria.Hospedagem;
import br.com.sgc.entities.hotelaria.ItensHospedagem;
import br.com.sgc.entities.hotelaria.UnidadeHospedagem;
import br.com.sgc.exception.ValidacaoException;

@Stateless
public class HospedagemSession extends GenericSession<Hospedagem> {

	private static final long serialVersionUID = 4274731480775787561L;

	@EJB private HospedagemDao dao;
	@EJB private GenericSession<UnidadeHospedagem> unidadeSession;
	@EJB private AnimalSession animalSession;
	@EJB private ItensHospedagemSession itensHospedagemSession;
	
	public Hospedagem findHospedagemByUnidade(UnidadeHospedagem unidade) {
		return dao.findHospedagemByUnidade(unidade);
	}
	
	@Override
	public Hospedagem save(Hospedagem t) throws ValidacaoException {
		t.setHospedagemAtiva(true);
		t.getUnidadeHospedagem().setDisponivel(false);
		t.getAnimal().setHospedado(true);
		
		animalSession.update(t.getAnimal());
		unidadeSession.update(t.getUnidadeHospedagem());
		return super.save(t);
	}

	public void liberarHospedagem(Hospedagem hospedagem) throws ValidacaoException {
		UnidadeHospedagem unidade = unidadeSession.findById(UnidadeHospedagem.class, hospedagem.getUnidadeHospedagem().getId());
		unidade.setDisponivel(true);
		unidadeSession.update(unidade);
		
		List<ItensHospedagem> itens = itensHospedagemSession.findItensByHospedagem(hospedagem);
		for(ItensHospedagem ih: itens){
			ih.setDevolvido(true);
		}
		hospedagem.getAnimal().setHospedado(false);
		animalSession.update(hospedagem.getAnimal());
		hospedagem.setItensHospedagem(itens);
		hospedagem.setHospedagemAtiva(false);
		update(hospedagem);
		
	}

}
